﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Data;
using TrustX.Dados;
using AcadPos.Entity;

namespace AcadPos.Data
{
    public class DBFeriado
    {

        #region Listar Feriados
        public DataTable getFeriados(DateTime pDataIni, DateTime pDataFim, int id_cidade)
        {
            string SQL = @"SELECT tf.ID_FERIADO,
                                   tf.DESCRICAO,
                                   CONVERT(VARCHAR,tf.DATA, 103) AS DATA
                            FROM   TB_FERIADO tf
                            WHERE  tf.DATA BETWEEN @DATA_INICIO AND @DATA_FIM
                            AND tf.ID_CIDADE = @ID_CIDADE";
            DataAccess db = new DataAccess(SQL);
            db.AddParam("@DATA_INICIO", SqlDbType.DateTime, pDataIni);
            db.AddParam("@DATA_FIM", SqlDbType.DateTime, pDataFim);
            db.AddParam("@ID_CIDADE", SqlDbType.Int, id_cidade);
            return db.GetDataTable();
        }
        #endregion

        #region Listar Feriados
        public DataTable getDadosFeriado(int IdFeriado, int IdCidade)
        {
            string SQL = @"SELECT *
                    FROM
                        TB_FERIADO TF
                    WHERE  
                        TF.ID_FERIADO = @ID_FERIADO
                    AND
                        TF.ID_CIDADE = (SELECT ID_CIDADE FROM TB_FERIADO WHERE ID_FERIADO = @ID_FERIADO)";
            
            DataAccess db = new DataAccess(SQL);

            db.AddParam("@ID_FERIADO", SqlDbType.Int, IdFeriado);
            //db.AddParam("@ID_CIDADE", SqlDbType.Int, IdCidade);
            
            return db.GetDataTable();
        }
        #endregion


        #region Incluir Feriado
        public bool incluirFeriado(Feriado feriado, string usuario)
        {
            string SQL = @"INSERT INTO TB_FERIADO
                              (
                                DESCRICAO,
                                DATA,
                                ID_CIDADE,
                                DATA_CADASTRO
                              )
                            VALUES
                              (
                                @DESCRICAO,
                                @DATA,
                                @ID_CIDADE,
                                GETDATE()
                              )";

            DataAccess db = new DataAccess(SQL);
            db.AddParam("@DESCRICAO", SqlDbType.VarChar, feriado.Descricao);
            db.AddParam("@DATA", SqlDbType.Date, feriado.Data);
            db.AddParam("@ID_CIDADE", SqlDbType.Int, feriado.IdCidade);
            //return db.ExecuteNonQuery();

            bool inseriu = db.ExecuteNonQuery();

            if (inseriu)
            {
                SQL = @"INSERT INTO TB_AUDITORIA
                      (
                        ACAO,
                        TABELA,
                        DESCRICAO,
                        USUARIO,
                        DATA                                    
                      )
                    VALUES
                      (                                     
                        'INSERT',
                        'TB_FERIADO',
                        ((SELECT CAST(MAX(ID_FERIADO) AS VARCHAR) FROM TB_FERIADO)
                        + ' | ' + UPPER(@DESCRICAO)
                        + ' | ' + CONVERT(VARCHAR, @DATA, 103)
                        + ' | ' + CAST(@ID_CIDADE AS VARCHAR)),                        
                        UPPER(@USUARIO),
                        GETDATE()
                      )";
                
                db = new DataAccess(SQL);

                db.AddParam("@ID_FERIADO", SqlDbType.Int, feriado.IdFeriado);
                db.AddParam("@ID_CIDADE", SqlDbType.Int, feriado.IdCidade);
                db.AddParam("@DATA", SqlDbType.VarChar, feriado.Data);
                db.AddParam("@DESCRICAO", SqlDbType.VarChar, feriado.Descricao);
                db.AddParam("@USUARIO", SqlDbType.VarChar, usuario);
            }
            db.ExecuteNonQuery();
            return inseriu;
        }
        #endregion

        #region Excluir Feriado
        public bool excluirFeriado(Feriado feriado, string usuario)
        {
            string SQL = @"DELETE 
                            FROM   TB_FERIADO
                            WHERE  ID_FERIADO = @ID_FERIADO";
            DataAccess db = new DataAccess(SQL);
            db.AddParam("@ID_FERIADO", SqlDbType.Int, feriado.IdFeriado);
            //return db.ExecuteNonQuery();

            bool excluiu = db.ExecuteNonQuery();

            if (excluiu)
            {
                SQL = @"INSERT INTO TB_AUDITORIA
                      (
                        ACAO,
                        TABELA,
                        DESCRICAO,
                        USUARIO,
                        DATA                                    
                      )
                    VALUES
                      (                                     
                        'DELETE',
                        'TB_FERIADO',
                        (SELECT CAST(@ID_FERIADO AS VARCHAR)
                        + ' | ' + UPPER(@DESCRICAO)
                        + ' | ' + CONVERT(VARCHAR, @DATA, 103)
                        + ' | ' + CAST(@ID_CIDADE AS VARCHAR)),                        
                        UPPER(@USUARIO),
                        GETDATE()
                      )";
                db = new DataAccess(SQL);

                db.AddParam("@ID_FERIADO", SqlDbType.Int, feriado.IdFeriado);
                db.AddParam("@ID_CIDADE", SqlDbType.Int, feriado.IdCidade);
                db.AddParam("@DESCRICAO", SqlDbType.VarChar, feriado.Descricao);
                db.AddParam("@DATA", SqlDbType.VarChar, feriado.Data);
                db.AddParam("@USUARIO", SqlDbType.VarChar, usuario);
            }
            db.ExecuteNonQuery();
            return excluiu;
        }
        #endregion
    }
}
